package com.chuangke.config;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.chuangke.common.db.mybatisplus.CkMetaObjectHandler;
import com.chuangke.common.db.mybatisplus.EasySqlInjector;

@Configuration
@EnableTransactionManagement(proxyTargetClass = true) // 开启事务,强制使用CGLIB代理,可选
@MapperScan("com.chuangke.**.dao") // 设置mapper接口的扫描包，必要
public class MybatisPlusConfig {
	
	/**config的方式注入，两者选一*/
	@Bean
	public MetaObjectHandler MetaObjectHandler() {
		return new CkMetaObjectHandler() ;
	}

	/**
     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
    
    @Bean
    @Primary//批量插入配置
    public EasySqlInjector easySqlInjector() {
        return new EasySqlInjector();
    }

//    @Bean
//    public ConfigurationCustomizer configurationCustomizer() {
//        return configuration -> configuration.setUseDeprecatedExecutor(false);
//    }
	
}
